  // 函数类型枚举
export enum FunctionType {
    SYSTEM = 'system', // 系统函数
    DIRECT = 'direct', // 前端函数
    PLUGIN = 'plugin', // 插件函数
    CUSTOM = 'custom', // 自定义函数
  }

  // 函数状态枚举
  export enum FunctionStatus {
    DRAFT = 0, // 草稿
    PUBLISHED = 1, // 已发布
    DEPRECATED = 2, // 已弃用
    ARCHIVED = 3, // 已归档
  }
  
  // 参数类型枚举
  export enum ParameterType {
    STRING = 'string', // 字符串
    NUMBER = 'number', // 数字
    BOOLEAN = 'boolean', // 布尔值
    ARRAY = 'array', // 数组
    OBJECT = 'object', // 对象
    ANY = 'any', // 任意类型
  }
  
  // 参数定义
  export interface Parameter {
    name: string; // 参数名
    type: ParameterType; // 参数类型
    description?: string; // 参数描述
    required: boolean; // 是否必填
    defaultValue?: any; // 默认值
    enum?: any[]; // 枚举值
    items?: Parameter; // 数组元素类型
    properties?: Record<string, Parameter>; // 对象属性
  }
  
  // 函数定义
  export interface FunctionDefinition {
    name: string; // 函数名称
    description: string; // 函数描述
    parameters: {
      type: 'object';
      properties: Record<string, Parameter>;
      required?: string[];
    };
  }
  
  // 主表：函数
  export interface Function {
    id: string;
    name: string; // 函数名称
    frontendAction: string; // 函数标识（英文数字下划线）
    type: FunctionType; // 函数类型
    description?: string; // 函数描述
    definition: string; // 函数定义（JSON格式）
    status: FunctionStatus; // 函数状态
    version: string; // 版本号
    tags?: string[]; // 标签
    modelIds?: string[]; // 适用的模型ID列表
    isPublic: boolean; // 是否公开
    isEnabled: boolean; // 是否启用
    createdAt: string; // 创建时间
    updatedAt: string; // 更新时间
    createdBy: string; // 创建人
    updatedBy: string; // 更新人
    lastUsedAt?: string; // 最后使用时间
    usageCount?: number; // 使用次数
    rateLimit?: number; // 速率限制
    timeout?: number; // 超时时间（毫秒）
    retryTimes?: number; // 重试次数
    retryInterval?: number; // 重试间隔（毫秒）
    proxy?: string; // 代理地址
    headers?: Record<string, string>; // 自定义请求头
    params?: Record<string, any>; // 自定义参数
  }
  
  // 创建/编辑函数的表单值类型
  export type FunctionFormValues = Omit<Function, 'createdAt' | 'updatedAt' | 'createdBy' | 'updatedBy' | 'lastUsedAt' | 'usageCount'>;